package cn.kgc.javaweb.servlet;

import cn.kgc.javaweb.entity.User;
import cn.kgc.javaweb.service.UserService;
import cn.kgc.javaweb.service.impl.UserServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

/**
 * 通过注解配置请求路径  servlet 3.0
 * /studentlist
 * @author mosin
 * date 2022/3/15
 * @version 1.0
 */
@WebServlet("/userlist")
public class UserServlet extends HttpServlet {

    private UserService userService = new UserServiceImpl();

    /**
     *
     * @param req    请求对象  tomcat服务器在调用service方法时 会将服务器接受请求后创建的请求对象和响应对象传入 service
     *                服务器接受请求后创建的请求对象 会将前端页面传递的参数进行封装  username password
     * @param resp    响应对象   通过该对象将服务器处理的结果响应给前端浏览器
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("查询学生列表");
        //调用userService对象中的查询方法
        List<User> users = userService.findAll();

        //将数据绑定在 req       /userlist
//        req.setAttribute("users",users);

        //转发  服务器内部行为 地址栏不会发生改变   同一次请求  实现数据的共享
//        req.getRequestDispatcher("user.jsp").forward(req,resp);

        //重定向  浏览器的行为 地址会发生改变    两次请求  不能实现数据共享  通过响应对象resp 告诉浏览器重新发送请求

        //获取session 将值绑定在器作用域中
        HttpSession session = req.getSession();
        session.setAttribute("users",users);
        resp.sendRedirect("user.jsp");   // user.jsp

    }


}
